/*
 * 二位数组的初始化
 */
#include <stdio.h>

#define M 4
#define N 3

void main()
{
	//方式1
	int i,j;
	int arr1[M][N]={
		{1,2,3},
		{4,5,6},
		{7,8,9},
		{10,11,12}
	};
	for(i=0;i<M;i++){
		for(j=0;j<N;j++){
			printf("arr[%d][%d]=%d\t",i,j,arr1[i][j]);
		}
		printf("\n");
	}
	printf("----------\n");
	//方式2
	int arr2[M][N]={1,2,3,4,5,6,7,8,9,10,11,12};
	for(i=0;i<M;i++){
		for(j=0;j<N;j++){
			printf("arr[%d][%d]=%d\t",i,j,arr2[i][j]);
		}
		printf("\n");
	}
	printf("----------\n");
	//方式3
	int arr3[][N]={1,2,3,4,5,6,7,8,9,10,11,12};
	for(i=0;i<M;i++){
		for(j=0;j<N;j++){
			printf("arr[%d][%d]=%d\t",i,j,arr3[i][j]);
		}
		printf("\n");
	}

}
/*
 * arr[0][0]=1     arr[0][1]=2     arr[0][2]=3
 * arr[1][0]=4     arr[1][1]=5     arr[1][2]=6
 * arr[2][0]=7     arr[2][1]=8     arr[2][2]=9
 * arr[3][0]=10    arr[3][1]=11    arr[3][2]=12
 * ----------
 * arr[0][0]=1     arr[0][1]=2     arr[0][2]=3
 * arr[1][0]=4     arr[1][1]=5     arr[1][2]=6
 * arr[2][0]=7     arr[2][1]=8     arr[2][2]=9
 * arr[3][0]=10    arr[3][1]=11    arr[3][2]=12
 * ----------
 * arr[0][0]=1     arr[0][1]=2     arr[0][2]=3
 * arr[1][0]=4     arr[1][1]=5     arr[1][2]=6
 * arr[2][0]=7     arr[2][1]=8     arr[2][2]=9
 * arr[3][0]=10    arr[3][1]=11    arr[3][2]=12
 *
 * 三种初始化方式得到的结果是一样的,但方式1更加直观
 * 方式2按照数组元素的存储方式依次存储
 * 方式3则省略了第一维的长度，编译器会自动判断第一维的长度，但第二维的长度不能省略，行数可以由以下方式获得：
 * if(0 == n%N)
 * 		M=n/N;
 * else
 * 		M=n/(N+1)
 * n为初始值的个数，N为第二维的长度
 */
